Relational database management systems (RDBMS) have been the dominant form of database systems over the past two decades. A major advantage of RDBMS is the ability to extract data from a database using intuitive Structured Query Language (SQL) statements. Business professionals and data analysts can therefore access a relational database without having specialized programming skills.
Today, however, RDBMS are increasingly seen as an obstacle to achieving scalability in certain applications. For instance, RDBMS implementation is meeting resistance in virtualized environments, large-scale network applications (such as social networking applications), and in on-demand distributed network environments (often referred to as “cloud computing” environments). A source of this difficulty is that it is difficult to cluster relational databases. In a database cluster, data is either replicated across machines in the cluster or is partitioned among them. In either case, adding a machine to the cluster generally requires data to be copied or moved to the new machine. Since this data shipping can be a time-consuming and expensive process, relational databases are difficult to dynamically provision on demand. For large-scale network applications whose data rapidly grows, these limitations can render RDBMS an unsuitable tool for storing data.
Alternatives to the relational database model are now emerging to address these scalability issues. These alternatives are often referred to as cloud databases, non-relational distributed databases or “NoSQL” databases. Some examples include Google's® BigTable solution and Amazon's® SimpleDB solution. Non-relational data store are implemented differently by different vendors. Some non-relational data stores, for instance, store data as simple key-value pairs. Other non-relational data stores take a more table-oriented or column-oriented approach to storing data. Still others provide a document-oriented approach for storing data, for example, by storing data in a document conforming to the JSON or XML specifications.